home *** CD-ROM | disk | FTP | other *** search
Text File | 1991-03-06 | 5.7 KB | 202 lines | [TEXT/GEOL] |
- Item 2572439 28-July-90 08:34PDT
-
- From: ITA0259 PROSOFT 1PADPDVENTY,IDV
-
- To: MACAPP.TECH$ MacApp Technical
-
- Sub: RE> TEditText and TTEView
-
- Aaron,
-
- I solved the problem writing TEditView a descendant of TTEView.
- TEditView creates, during its initialization time, an invisible
- and neutral descendant of TEditText, TNulText.
- TNulText works for you making TEditView like a TEditText concerning
- the Tab chain. When you write your view resource you have to put in the
- right order your TEditText and your TEditView.
- I hope this help you.
-
- Yours,
- Stefano Rampazzo, Prosoft
- AppleLink ITA0259
-
- {INTERFACE}
- TNulText = OBJECT (TEditText)
- fEditView: TEditView;
- FUNCTION TNulText.DoMouseCommand(VAR theMouse: Point; VAR info: EventInfo;
- VAR hysteresis: Point): TCommand; OVERRIDE;
- PROCEDURE TNulText.Draw(area: Rect); OVERRIDE;
- PROCEDURE TNulText.INulText(itsSuperView: TView; itsLocation, itsSize: VPoint;
- itsMaxChars: INTEGER; itsEditView: TEditView);
- PROCEDURE TNulText.StartEdit(selectChars: BOOLEAN; theTEView: TDialogTEView);
- OVERRIDE;
- PROCEDURE TNulText.StopEdit; OVERRIDE;
- PROCEDURE TNulText.Fields(PROCEDURE DoToField(fieldName: Str255; fieldAddr:
- Ptr;
- fieldType: INTEGER)); OVERRIDE;
- END;
-
- TEditView = OBJECT (TTEView)
- fNulText: TNulText;
- FUNCTION TEditView.DoMouseCommand(VAR theMouse: Point; VAR Info: EventInfo;
- VAR Hysteresis: Point): TCommand; OVERRIDE;
- FUNCTION TEditView.DoKeyCommand(ch: Char; aKeyCode: INTEGER; VAR info:
- EventInfo): TCommand; OVERRIDE;
- PROCEDURE TEditView.IEditView(itsDocument: TDocument; itsSuperView: TView;
- itsLocation, itsSize: VPoint;
- itsHDeterminer, itsVDeterminer: SizeDeterminer; itsInset: Rect;
- itsTextStyle: TextStyle; itsJustification: INTEGER; itsStyleType,
- itsAutoWrap: BOOLEAN);
- PROCEDURE TEditView.IRes(itsDocument: TDocument; itsSuperView: TView; VAR
- itsParams: Ptr); OVERRIDE;
- FUNCTION TEditView.MakeNulText: TNulText;
- PROCEDURE TEditView.Fields(PROCEDURE DoToField(fieldName: Str255; fieldAddr:
- Ptr;
- fieldType: INTEGER)); OVERRIDE;
- END;
-
- {IMPLEMENTATION}
-
- FUNCTION TNulText.DoMouseCommand(VAR theMouse: Point; VAR info: EventInfo;
- VAR hysteresis: Point): TCommand; OVERRIDE;
- BEGIN
- DoMouseCommand := gNoChanges;
- END;
-
- PROCEDURE TNulText.Draw(area: Rect); OVERRIDE;
- BEGIN
- END;
-
- PROCEDURE TNulText.INulText(itsSuperView: TView; itsLocation, itsSize: VPoint;
- itsMaxChars: INTEGER; itsEditView: TEditView );
- BEGIN
- IEditText(itsSuperView,itsLocation,itsSize,itsMaxChars);
- fEditView:=itsEditView;
- END;
-
- PROCEDURE TNulText.StartEdit(selectChars: BOOLEAN; theTEView: TDialogTEView);
- OVERRIDE;
- VAR
- myExtent: VRect;
- minToSee: Point;
- itsWindow: TWindow;
- BEGIN
- {$IFC qDebug}
- IF fEditView = NIL THEN
- BEGIN
- ProgramBreak('the TEditView is nil.');
- EXIT(StartEdit);
- END;
- {$ENDC}
-
- IF fTEView <> NIL THEN
- BEGIN
- fTEView.InstallSelection(TRUE, FALSE);
- fTEView.InstallEditText(NIL, FALSE);
- fTEView := NIL;
- END;
- itsWindow := GetWindow;
- IF itsWindow <> NIL THEN
- itsWindow.SetTarget(fEditView);
- fEditView.GetExtent(myExtent);
- InsetVRect(myExtent, - 10, - 10);
- minToSee.h := MIN(fSize.h + 10, kMaxCoord);
- minToSee.v := MIN(fSize.v + 10, kMaxCoord);
- fEditView.RevealRect(myExtent, minToSee, kVisible);
- END;
-
- PROCEDURE TNulText.StopEdit; OVERRIDE;
- BEGIN
- TESetSelect (0,0,fEditView.fhTE);
- END;
-
- PROCEDURE TNulText.Fields(PROCEDURE DoToField(fieldName: Str255; fieldAddr:
- Ptr;
- fieldType: INTEGER)); OVERRIDE;
- BEGIN
- DoToField('fEditView', @fEditView, bObject);
- INHERITED Fields(DoToField);
- END;
-
- FUNCTION TEditView.DoMouseCommand(VAR theMouse: Point; VAR Info: EventInfo;
- VAR Hysteresis: Point): TCommand; OVERRIDE;
- VAR
- aDialogView:TDialogView;
- BEGIN
- IF gTarget <> SELF then
- BEGIN
- aDialogView:= TDialogView(GetDialogView);
- IF aDialogView.DeselectCurrentEditText THEN
- BEGIN
- GetWindow.SetTarget(SELF);
- DoMouseCommand:= INHERITED DoMouseCommand(theMouse, Info, Hysteresis);
- END
- ELSE
- DoMouseCommand:= gNoChanges;
- END
- ELSE
- DoMouseCommand:= INHERITED DoMouseCommand(theMouse, Info, hysteresis);
- END;
-
- FUNCTION TEditView.DoKeyCommand(ch: Char; aKeyCode: INTEGER; VAR info:
- EventInfo): TCommand; OVERRIDE;
- VAR
- itsWindow: TWindow;
- BEGIN
- DoKeyCommand := gNoChanges;
- IF IsViewEnabled & fAcceptsChanges & (ch=chTab) THEN
- BEGIN
- InstallSelection(TRUE, FALSE);
- itsWindow := GetWindow;
- IF itsWindow <> NIL THEN itsWindow.SetTarget(fNulText);
- TDialogView(GetDialogView).Tab(info.theShiftKey);
- END
- ELSE
- DoKeyCommand := INHERITED DoKeyCommand(ch, aKeyCode, info);
- END;
-
- PROCEDURE TEditView.IEditView(itsDocument: TDocument; itsSuperView: TView;
- itsLocation, itsSize: VPoint;
- itsHDeterminer, itsVDeterminer: SizeDeterminer; itsInset: Rect;
- itsTextStyle: TextStyle; itsJustification: INTEGER; itsStyleType,
- itsAutoWrap: BOOLEAN);
- BEGIN
-
- IEditView(itsDocument,itsSuperView,itsLocation,itsSize,itsHDeterminer,itsVDeter
- miner,
- itsInset,itsTextStyle,itsJustification,itsStyleType,itsAutoWrap);
- fNulText:=MakeNulText;
- fStyles := NIL;
- fElements := NIL;
- END;
-
- PROCEDURE TEditView.IRes(itsDocument: TDocument; itsSuperView: TView; VAR
- itsParams: Ptr); OVERRIDE;
- BEGIN
- INHERITED IRes(itsDocument,itsSuperView,itsParams);
- fNulText:=MakeNulText;
- END;
-
- FUNCTION TEditView.MakeNulText: TNulText;
- VAR
- aNulText: TNulText;
- BEGIN
- New(aNulText);
- FailNil(aNulText);
- aNulText.INulText(fSuperView,gZeroVPt,gZeroVPt,0,SELF);
- WITH aNulText DO
- BEGIN
- fAdornment:=[];
- END;
- MakeNulText:=aNulText;
- END;
-
- PROCEDURE TEditView.Fields(PROCEDURE DoToField(fieldName: Str255; fieldAddr:
- Ptr;
- fieldType: INTEGER)); OVERRIDE;
- BEGIN
- DoToField('fNulText', @fNulText, bObject);
- INHERITED Fields(DoToField);
- END;
-
-